ПРИМЕРЫ РЕАЛИЗАЦИИ ПРОГРАММНОГО ПРИЛОЖЕНИЯ
Для организации взаимодействия прикладных процессов в современных вычислительных, компьютерных сетях различного уровня и масштаба необходимо использовать сетевые протоколы [14, 15, 16, 17].
Определение 1. Протоколом называется набор правил для одной из коммуникационных функций.
Определение 2. Протокол - это набор синтаксических и семантических правил, в соответствии с которыми осуществляется взаимодействие процессов одного уровня в сети.
Определение 3. Стек протоколов представляет собой набор организованных по уровням протоколов, которые, работая совместно, позволяют приложениям обмениваться данными.
Определение 4. Набор протоколов - это семейство протоколов, работающий совместно и связанных между собой. Набор протоколов TCP/IP обеспечивает множество различных возможностей, начиная от динамического определения адреса сетевого адаптера и заканчивая службой каталогов, определяющей способ доставки сообщения электронной почты.
Определение 5. Хостом называется компьютер, который выполняет приложения и имеет одного или нескольких пользователей. Поддерживающий TCP/IP хост, работает как конечная точка сетевой коммуникации.
Пример создания клиент-серверного приложения на основе потокового сокета.
Для начала разработки подключите к проекту библиотеку ws2_32.1ib (в MVC++12.0: Project -> Settings -> Link -> Object/library modules, необходимо обязательно в конце строки дописать). Подключите используемый файл winsock2.h:
#include
До начала использования функций WinSock необходимо выполнить инициализацию WinSock.
WSADATA WSAData; // После инициализации содерж инф. о WinSock
if (WSAStartup (MAKEWORD(2,1), &WSAData) != 0)
{ printf ("WSAStartup faild. Error: %d", WSAGetLastError ()); return FALSE;
}
Приложение СЕРВЕР
Откройте сокет при помощи socket функции.
Используйте AF_INET (семейство интернет протоколов) дня формата адреса (address format) и SOCK_STREAM (потоковый сокет) для типа используемого сокета (type parameter.)
Пример открытия сокета.
int WinSocket;
if ((WinSocket = socket (AF_INET, SOCK_STREAM, 0)) ==
INVALID_SOCKET)
{
printf ("Allocating socket failed. Error: %d", WSAGetLastError () ) ; return -1;
}
Установление соединения с клиентом accept функцией. Потоковый сокет TCP использует функцию accept дня приема запроса на соединение от клиента и именования данного соединения между клиентом и сервером. Функция accept создает новый сокет. Исходный сокет используется сервером дня прослушивания запросов на соединение от клиентов.
printf("Waiting connect from client. "); int ClientSock;
accept_sin_len = sizeof (accept_sin);
// Accept an incoming connection attempt on WinSocket. ClientSock = accept (WinSocket,
(struct sockaddr *)
&accept_sin,
(int *) &accept_sin_len);
// Stop listening for connections from clients, closesocket (WinSocket);
if (ClientSock == INVALID_SOCKET)
{
printf ("Accepting connection with client failed. Error: %d", WSAGetLastError ()); return FALSE;
}